# 解释器
"""
解释器就是帮助我们将Python代码，也就是.py文件，交给机器可以执行的工具。
通常我们将Python和Java语音归为解释型语言，而对于C/C++则归为编译型语言
"""

# 编译型
"""
#     编译器将源码编译成机器语音，但是这时候还不能执行，因为缺少启动代码和相关的库代码
#     针对2中的问题，连接器上场了，他主要用来找到以上缺少的代码，并进行组装成最后机器可以直接运行的可执行文件
"""

# 解释型
"""
#     解释器将源码转化为字节码，在Python中一般为.pyc文件，在Java中则是.class文件了，这个字节码机器不能执行的
#     如果要执行字节码，则虚拟机上场了，这里需要强调一下，这个虚拟机不是vmware或者virtualbox的虚拟机概念，
#     在Python中由虚拟机来执行这些字节码，在Java中同样是由JVM来实现，由于2中的字节码一般是不依赖于操作系统的，
#     所以可以做到跨平台运行，也就是跨平台这件事，有虚拟机来搞定了
"""

# Python中的几种解释器
"""
# CPython
#
# CPython是标准Python，也是其他Python编译器的参考实现。通常提到“Python”一词，
# 都是指CPython。CPython由C编写，将Python源码编译成CPython字节码，由虚拟机解释执行。没有用到JIT等技术，垃圾回收方面采用的是引用计数。
#
# Jython
#
# Jython在JVM上实现的Python，由Java编写。Jython将Python源码编译成JVM字节码，由JVM执行对应的字节码。因此能很好的与JVM集成，
# 比如利用JVM的垃圾回收和JIT，直接导入并调用JVM上其他语言编写的库和函数。
#
# IronPython
# IronPython与Jython类似，所不同的是IronPython在CLR上实现了Python，即面向.NET平台，
# 由C#编写。IronPython将源码编译成TODO CLR，同样能很好的与.NET平台集成。即与Jython相同，
# 可以利用.NET框架的JIT、垃圾回收等功能，能导入并调用.NET上其他语言编写的库和函数。IronPython默认使用Unicode字符串。
#
# PyPy
# 这里说的PyPy是指使用RPython实现，利用Tracing JIT技术实现的Python，而不是RPython工具链。PyPy可以选择多种垃圾回收方式，
# 如标记清除、标记压缩、分代等。相对于CPython，PyPy的性能提升非常明显，但对第三方模块的支持不够。比如无法很好的支持使用CPython的C API编写的扩展。
"""
